package niuke;

import java.util.Arrays;

/**
 * Created by asus on 2017/12/11.
 */
public class Combination {

    public static void main(String[] args){
        //为了测试函数的简单展示，这儿写死了，给定集合n=6
        String[] arr = {"1","2","3","4","5","6"};
        //测试：从6个里面选3个
        combinations2(arr, 3, 0, new String[3]);
    }

    /**
     * 组合算法
     * @param arr 给定数组
     * @param len  递归函数第一次使用时的值表示：k值（即选多少数）
     * @param startPosition 从给定数组中开始选择的位置
     * @param result 记录结果的数组
     */
    static void combinations2(String[] arr, int len, int startPosition, String[] result){
        //output
        if (len == 0){
            //或者用来保存结果
            System.out.println(Arrays.toString(result));
            return;
        }
        for (int i = startPosition; i <= arr.length-len; i++){
            result[result.length - len] = arr[i];
            combinations2(arr, len-1, i+1, result);
        }
    }

}
